--[[
描述 ： 多行文本控件
作者 ： 金偉光
时间 ： 14/04/14
]]

MLListCellTextView = Class(MLView,'MLListCellTextView');

MLListCellTextView.Style_Common		= MLGraphics.Style_Common;
MLListCellTextView.Style_Bold		= MLGraphics.Style_Bold;

MLListCellTextView.ALIGN_LEFT    	= 0; 	 -- 左对齐
MLListCellTextView.ALIGN_CENTER  	= 1; 	 -- 中对齐
MLListCellTextView.ALIGN_RIGHT   	= 2; 	 -- 右对齐   
MLListCellTextView.id     			= nil;   -- 唯一标识
MLListCellTextView.align        	= nil;   -- 对齐方式

MLListCellTextView.text  			= nil;   -- 显示文本
MLListCellTextView.fontHeight    	= nil;   -- 字体高度
MLListCellTextView.fontColor     	= nil;   -- 字体背景颜色

MLListCellTextView.viewCtrl   		= nil;   -- 所属viewCtrl

MLListCellTextView.mWidth 			= nil;   -- 宽度
MLListCellTextView.mHeight 			= nil;   -- 高度

MLListCellTextView.mList			= nil;   -- 显示不全时调用

MLListCellTextView.mVSpace 			= nil;


--[[
功能   ： 初始化 MLListCellTextView 实例
参数   ： text   --  文本
         width  --  宽度
         height --  高度
         viewCtrl --- 所属viewCtrl
返回   ： MLListCellTextView 窗体
]]

function MLListCellTextView:init(viewCtrl,textTemplate,text,id)
	local width  = textTemplate.width or UITheme.MULTILABEL_WIDTH;
	local height = textTemplate.height or UITheme.MULTILABEL_HEIGHT;

	self:initView(width, height, viewCtrl, id);
	qtEvent[self.mHashcode] = self;

	self.fs = textTemplate.textType or MLListCellTextView.Style_Bold;
	-- 初始化
	self.mWidth =  width;
	self.mHeight = height;
	self.fontHeight = textTemplate.textHeight or AW(UITheme.LABEL_FONT_HEIGHT);
	if self.fontHeight == '' then
		self.fontHeight = AW(UITheme.LABEL_FONT_HEIGHT)
	end
	self.fontColor = textTemplate.textColor or UITheme.LABEL_FONT_COLOR;
	self.align = textTemplate.textAlign or UILabel.ALIGN_LEFT;
	self.text = text;
	self.mVSpace = nil;

	self.onPoint = function (evt, x, y)
		local interval =  self.LOSE_FOCUS_INTERVAL;
		if evt == MLView.PointDown then
			self.mDownX = x;
			self.mDownY = y;
			self.mIsFocus= false;
		elseif evt == MLView.PointUp then
			self.mDownX = x;
			self.mDownY = y;
			self.mIsFocus = false;
		elseif evt == MLView.PointMove then
			if math.abs(x-self.mDownX) > interval or math.abs(y-self.mDownY) > interval then
				self.mIsFocus = false;
			end
		end
		self:draw();
		return 1;  -- 事件不拦截
	end

	self:draw();
	return self;
end

--[[
功能   ： 设置文本
参数   ： text --- 文本
返回   ： 无
]]
function  MLListCellTextView:setText(text)
	self.text = text;
end


--[[
功能   ： 画控件
参数   ： text --- 文本
返回   ： 无
]]
function  MLListCellTextView:draw()
	if not self.text then return end
	local w, h = self:getWH();

	local strh = MLNative.measStringHeight(self.text, self.fontHeight, self.fs, w);
	local g = self:getGraphic();
	g:clear();
	if self.fontHeight > h then
		return;
	end
	if strh > h then
		--显示不全，List显示
		if self.mList == nil then
			self.mList = MLScrollView.new():initScrollView(w, h, false);
			self:add(self.mList, 0, 0);
		end

		local view =MLView.new():initView(w, strh);
		view:getGraphic():drawRectString(self.text, 0, 0, w, strh, UIColor.COLOR_BLACK, self.fontHeight, self.fs);
		self.mList:add(view, 0, 0);
	else
		self:getGraphic():drawRectString(self.text, 0, 0, w, h, UIColor.COLOR_BLACK, self.fontHeight, self.fs);
	end
end
--[[
功能   ： 显示控件
参数   ： 无
返回   ： 无
]]
function MLListCellTextView:show()
    self:draw();
end
--[[
功能   ： 更新控件
参数   ： 无
返回   ： 无
]]
function MLListCellTextView:update() 
	 self:draw();
end


--[[
功能：  触摸笔事件监听函数
参数：  eventType	事件类型
参数：  x	 x 坐标
参数：  y	y 坐标
返回：  是否拦截此事件 true：拦截 false：不拦截
注解：  上层可重写此方法，来监听此事件
用法：   if eventType == View.PointDown then .... end
]]
function qt_events_point(hashcode, evt, x,y)
	if qtEvent[hashcode]~=nil then
		if qtEvent[hashcode].onPoint ~=nil then
			return qtEvent[hashcode].onPoint(evt,x,y);
		    else
				if qtEvent[hashcode].onClick ~=nil then
			 	return true;
			 else
				return false;
			 end
		end
	end
end

--[[
功能：  触摸笔点击事件监听函数
参数：	无	
返回：  无
注解：	层可重写此函数，来监听此事件
]] 
function qt_events_click(hashcode)
	if qtEvent[hashcode]~=nil then
		if qtEvent[hashcode].onClick ~=nil then
		   qtEvent[hashcode].onClick();
		end
	end
end
